//package com.css.util;
//
//import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
//import com.google.common.collect.Lists;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.data.redis.core.HashOperations;
//import org.springframework.data.redis.core.ListOperations;
//import org.springframework.data.redis.core.RedisTemplate;
//import org.springframework.data.redis.core.ValueOperations;
//
//import java.util.Collection;
//import java.util.concurrent.TimeUnit;
//
//@Configuration
//public class RedisUtil<T> {
//    private RedisTemplate<String, T> redisTemplate;
//    private HashOperations<String, Object, T> hashOperation;
//    private ListOperations<String, T> listOperation;
//    private ValueOperations<String, T> valueOperations;
//
//    @Autowired
//    RedisUtil(RedisTemplate<String, T> redisTemplate) {
//        this.redisTemplate = redisTemplate;
//        this.hashOperation = redisTemplate.opsForHash();
//        this.listOperation = redisTemplate.opsForList();
//        this.valueOperations = redisTemplate.opsForValue();
//    }
//
//    public void putValue(String key, T value) {
//        valueOperations.set(key, value, 7, TimeUnit.DAYS);
//    }
//
//    public void putValue(String key, T value, long timeout) {
//        valueOperations.set(key, value, timeout, TimeUnit.SECONDS);
//    }
//
//    /**
//     * 获取值
//     *
//     * @param key
//     * @return
//     */
//    public Object getValue(String key) {
//        return valueOperations.get(key);
//    }
//
//    public Object getAndRemoveValue(String key) {
//        T value = valueOperations.get(key);
//        redisTemplate.delete(key);
//        return value;
//    }
//
//    /**
//     * 获取值
//     *
//     * @param redisKey
//     * @return
//     */
//
//
//    /**
//     * 延长时间
//     *
//     * @param redisKey
//     * @param key
//     * @param timeout
//     * @param unit
//     */
//
//
//    public void delete(String key) {
//        redisTemplate.delete(key);
//    }
//
//    public void delete(Collection<String> keys) {
//        if (CollectionUtils.isEmpty(keys)) {
//            return;
//        }
//        redisTemplate.delete(keys);
//    }
//
//    public Boolean exists(String key) {
//        return redisTemplate.countExistingKeys(Lists.newArrayList(key)) > 0;
//    }
//    //     public void putMap(String redisKey,Object key,T data) {
////        hashOperation.put(redisKey, key, data);
////     }
////
////     public T getMapAsSingleEntry(String redisKey,Object key) {
////        return  hashOperation.get(redisKey,key);
////     }
////
////     public Map<Object, T> getMapAsAll(String redisKey) {
////        return hashOperation.entries(redisKey);
////     }
////    public void putValueWithExpireTime(KeyPrefix redisKey, String key, T value, long timeout, TimeUnit unit) {
////        valueOperations.set(redisKey.getPrefix()+key, value, timeout, unit);
////    }
//}
